﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DevComponents.DotNetBar.Controls;
using Business;
using Entities;

namespace Presentation
{
    public partial class frmLapPhieuNhapSach : DevComponents.DotNetBar.Office2007Form
    {
        public frmLapPhieuNhapSach()
        {
            InitializeComponent();
            dgvPhieuNhap.Columns.Add("STT", "STT");
            dgvPhieuNhap.Columns.Add("MaSach", "Mã sách");
            dgvPhieuNhap.Columns.Add("TenSach", "Tên sách");
            dgvPhieuNhap.Columns.Add("TheLoai", "Thể loại");
            dgvPhieuNhap.Columns.Add("TacGia", "Tác giả");
            dgvPhieuNhap.Columns.Add("SoLuong", "Số lượng");
            dgvPhieuNhap.Columns["STT"].Width = 50;

            dgvTimKiem.Columns.Add("STT", "STT");
            dgvTimKiem.Columns.Add("MaSach1", "Mã sách");
            dgvTimKiem.Columns.Add("TenSach", "Tên sách");
            dgvTimKiem.Columns.Add("TheLoai", "Thể loại");
            dgvTimKiem.Columns.Add("TacGia", "Tác giả");
            dgvTimKiem.Columns.Add("SoLuong", "Số lượng");
            dgvTimKiem.Columns["STT"].Width = 50;
        }

        private void frmLapPhieuNhapSach_Load(object sender, EventArgs e)
        {
            dtiNgayLapPhieu.Value = DateTime.Now;
            PhieuNhapDTO pn = new PhieuNhapDTO();
            pn.NgayNhap = dtiNgayLapPhieu.Value;
            pn.TinhTrang = 1;
            PhieuNhapService.Insert(pn);

            
        }

        private void dgvTimKiem_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            //MessageBox.Show("click");
        }

        private void dgvTimKiem_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            //MessageBox.Show("cell click");
        }

        private void dgvTimKiem_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (e.ColumnIndex==-1)
            {
                MessageBox.Show("cell click");
            }
        }

        private void dgvPhieuNhap_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
        //    DataGridViewRow row = dgvPhieuNhap.Rows[e.RowIndex];
        //    DataGridViewCell cell=dgvPhieuNhap["MaSach",e.RowIndex];
        //    if(dgvPhieuNhap.Columns[e.ColumnIndex].Name=="MaSach")
        //    {
        //        int maSach = -1;
        //        if (!KiemTraSoNguyen(cell, ref maSach) || maSach < 0)
        //        {
        //            cell.ErrorText = "Mã sách không hơp lệ!";
        //        }
        //        else
        //        {
        //            SachDTO s = SachService.GetSachByMaSach(maSach);
        //            if (s==null)
        //            {
        //                cell.ErrorText = "Không tồn tại mã sách này!";
        //            }
        //            else{
        //                cell.ErrorText = "";
        //                row.Cells["TenSach"].Value = s.TenSach;
        //                row.Cells["TheLoai"].Value = TheLoaiService.GetTheLoaiByMaLoai(s.TheLoai).TenTheLoai;
        //                row.Cells["TacGia"].Value = TacGiaService.GetTacGiaByMaTacGia(s.MaTacGia);
        //            }
        //        }
        //    }
        }
        private bool KiemTraSoNguyen(DataGridViewCell cell, ref int i)
        {
            if (cell.Value==null)
            {
                return false;
            }
            string value=cell.Value.ToString();
            if(string.IsNullOrEmpty(value) || !int.TryParse(value,out i))
            {
                
                return false;
            }
            i = int.Parse(value);
            return true;
 
        }

        private void dgvPhieuNhap_CellValidated(object sender, DataGridViewCellEventArgs e)
        {
            //DataGridViewCell cell = dgvPhieuNhap[e.ColumnIndex, e.RowIndex];
            //int i=-1;
            //if (dgvPhieuNhap.Columns[e.ColumnIndex].Name == "MaSach" || dgvPhieuNhap.Columns[e.ColumnIndex].Name == "SoLuong")
            //{
            //    if (!KiemTraSoNguyen(cell,ref i))
            //    {
            //        cell.ErrorText = "Phải nhập số nguyên!";
                    
            //    }
            //}
        }

        private void btnLapPhieuMoi_Click(object sender, EventArgs e)
        {
            MessageBox.Show(PhieuNhapService.GetLastMaPhieuNhap().ToString());
        }

        private void btnLapPhieu_Click(object sender, EventArgs e)
        {

        }

        private void dgvPhieuNhap_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
        {
            DataGridViewCell cell = dgvPhieuNhap[e.ColumnIndex, e.RowIndex];
            DataGridViewRow row = dgvPhieuNhap.Rows[e.RowIndex];
            int i = -1;
            if (dgvPhieuNhap.Columns[e.ColumnIndex].Name == "MaSach" && e.RowIndex<dgvPhieuNhap.Rows.Count-1)
            {
                if (!int.TryParse(e.FormattedValue.ToString(), out i))
                {
                    e.Cancel = true;                    
                    dgvPhieuNhap.Rows[e.RowIndex].ErrorText = "Phải nhập số nguyên!";
                    return;
                }
                SachDTO s=SachService.GetSachByMaSach(i);
                if (s==null)
                {
                    e.Cancel = true;
                    dgvPhieuNhap.Rows[e.RowIndex].ErrorText = "Không tồn tại mã sách này!";
                }
                else
                {
                    ThamSoDTO TonToiDa = ThamSoService.GetThamSoByMaThamSo(2);
                    if (TonToiDa.SuDung == 1 && s.SoLuong>=TonToiDa.GiaTri)
                    {
                        e.Cancel = true;
                        row.ErrorText = "Chỉ nhập các sách có lượng tồn nhỏ hơn: " + TonToiDa.GiaTri.ToString();
                    }
                    else
                    {
                        row.ErrorText = "";
                        row.Cells["TenSach"].Value = s.TenSach;
                        row.Cells["TheLoai"].Value = TheLoaiService.GetTheLoaiByMaLoai(s.TheLoai).TenTheLoai;
                        row.Cells["TacGia"].Value = TacGiaService.GetTacGiaByMaTacGia(s.MaTacGia);
                    }
                }
                return;
            }
            if (dgvPhieuNhap.Columns[e.ColumnIndex].Name == "SoLuong" && e.RowIndex<dgvPhieuNhap.Rows.Count-1)
            {
                if (!int.TryParse(e.FormattedValue.ToString(), out i))
                {
                    e.Cancel = true;
                    dgvPhieuNhap.Rows[e.RowIndex].ErrorText = "Phải nhập số nguyên!";
                    return;
                }

                 ThamSoDTO NhapToiThieu=ThamSoService.GetThamSoByMaThamSo(1);
                 
                if (NhapToiThieu.SuDung==1 && i<NhapToiThieu.GiaTri)
                {
                    e.Cancel = true;
                    dgvPhieuNhap.Rows[e.RowIndex].ErrorText = "Số lượng nhập phải lớn hơn " + NhapToiThieu.GiaTri.ToString();
                }
                
            }

        }
        
    }
}
